package iedcyt.acute.businessServices.collGroups.dataMethods;


import iedcyt.acute.businessServices.scripts.AuthorsHighFrec;
import iedcyt.acute.dataAccess.domain.acute1.Author_Data;
import iedcyt.acute.dataAccess.domain.acute1.CollGroupData;

import java.util.ArrayList;
import java.util.List;

/**
 * Clase que se encarga del calculo de la frecuencia superior de un autor.
 * 
 * 
	 * Que es la frecuencia superior?
	 * El numero de documentos del autor en la base de datos superior (fuera del area).
	 * 
	 * La obtencion de esta frecuencia se hace en base a las firmas del autor y sus centros
	 * asignados. La base de datos superior es de estructura MAAUCO por lo que hay que hacer
	 * matching del nombre de la firma y sus PIOD.
 * @author ISR
 *
 */
public class CollGroupData_AuthorHighFrecMethod extends ACollGroupDataMethod {

	
	
	/**
	 * se encarga del calculo de la frecuencia superior de un autor.
	 * @param type permite indicar los tipos de documentos para el calculo
	 */
	public CollGroupData_AuthorHighFrecMethod(List<String> type)
	{
		_types = type;
	
		this._dataDescription = "HighFrequency";
	}
	
	
	/**
	 * @see iedcyt.acute.businessServices.collGroups.dataMethods.ACollGroupDataMethod#execute(int)
	 */
	@Override
	public List<CollGroupData> execute(int idGr) {
		//No hay frecuencia superior para los grupos
		ArrayList<CollGroupData> arr = new ArrayList<CollGroupData>();
		return arr;
	}
	
	/**
	 * @see iedcyt.acute.businessServices.collGroups.dataMethods.ACollGroupDataMethod#executeForAuthor(int)
	 */
	@Override
	public List<Author_Data> executeForAuthor(int idAu) {

		 //Vamos a calcular la frecuencia superior utilizando un script de groovy para intentar hacerlo mas rapido.
		 int highFrec = AuthorsHighFrec.getInstance().getIdDocsFromHigherDataBaseWithoutSeparate(idAu).size();
		 
		 Author_Data data = new Author_Data(idAu, "HighFrequency", highFrec+"");
		 			 
		ArrayList<Author_Data> arr = new ArrayList<Author_Data>();
		arr.add(data);
		
		return arr;
	}
	
	

	
}
